package com.m1.tzolkin.model.board;

import com.m1.tzolkin.model.exceptions.StepMoveException;
import com.m1.tzolkin.model.players.ITZPlayer;
import com.m1.tzolkin.model.temples.ITemple;

public interface ITempleBoard extends IBasicBoard {
	
	// REQUETES

	/**
	 * Retourne la marche du temple t sur laquelle est le joueur p.
	 * @pre <pre>
	 *     p != null
	 *     t != null
	 *     getPlayers().contains(p) </pre>
	 */
	int getTemplePosition(ITemple t, ITZPlayer p);
	
	// COMMANDES
	
	/**
	 * Monte le joueur p dans le temple t si c'est possible.
	 * @pre <pre>
	 *     p != null
	 *     t != null </pre>
	 */
	void upTemple(ITZPlayer p, ITemple t) throws StepMoveException;

	/**
	 * Descend le joueur p d'une marche dans le temple t si c'est possible.
	 * @pre <pre>
	 *     p != null
	 *     t != null </pre>
	 */
	void downTemple(ITZPlayer p, ITemple t) throws StepMoveException;

}
